module tyrc_program_count #(
    `include "tyrc_param.v"
)(
    input clk,
    input rst_n,
    input incr,
    input load,
    input [ADDR_WD -1:0]count_in,
    output[ADDR_WD -1:0]count_out
);
/*AUTO_DFF [ADDR_WD] pc_cnt tyrc_dffre END*/
//AUTO_DFF_START
wire [ADDR_WD -1:0]pc_cnt_d ;
wire [ADDR_WD -1:0]pc_cnt_q ;
wire               pc_cnt_en;
wire [ADDR_WD -1:0]pc_cnt = pc_cnt_q;
tyrc_dffre #(.WD(ADDR_WD), .VA({ADDR_WD{1'b0}}))
u_pc_cnt_dff (
  .clk    (clk),
  .rst_n  (rst_n),
  .d      (pc_cnt_d),
  .en     (pc_cnt_en),
  .q      (pc_cnt_q)
);
//AUTO_DFF_END

assign pc_cnt_en = incr || load;
assign pc_cnt_d  = load ? count_in : pc_cnt_q + 1'b1;
assign count_out = pc_cnt_q;

endmodule
